package com.shambles.manage2.controller;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.shambles.manage2.service.AbattoirService;
import com.shambles.manage2.tkmapper.entity.*;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * 摊位操作接口
 */
@RestController()
@RequestMapping("abattoir")
public class AbattoirController {

    @Autowired
    private AbattoirService abattoirService;


    /**
     * 返回摊位列表，所有摊位带状态
     *
     * @return
     */
    @GetMapping("abattoirList")
    public List<AbattoirBooth> abattoirList() {
        return abattoirService.abattoirList();
    }

    /**
     * 修改摊位信息
     *
     * @return
     */
    @PostMapping("update")
    public void updateAbattoir(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        AbattoirBooth abattoirBooth = new AbattoirBooth();
        BeanUtils.populate(abattoirBooth, jsonObject);
        abattoirService.updateAbattoir(abattoirBooth);
    }

    /**
     * 入场,分配攤位
     * 需修改摊位状态，新建入场
     */

    @PostMapping("allot")
    public RestResponse allot(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        AdmissionRegister admissionRegister = new AdmissionRegister();
        BeanUtils.populate(admissionRegister, jsonObject);
        abattoirService.allot(admissionRegister);
        return RestResponse.ok();
    }

    /**
     * 取消入场
     *
     * @param jsonObject
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     */
    @PostMapping("cancelAllot")
    public void cancelAllot(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        AdmissionRegister admissionRegister = new AdmissionRegister();
        BeanUtils.populate(admissionRegister, jsonObject);
        abattoirService.cancelAllot(admissionRegister);
    }

    /**
     * 入场列表
     */
    @PostMapping("admissionList")
    public RestResponse<PageInfo<AdmissionRegister>> admissionList(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        MessageRequestVM messageRequestVM = new MessageRequestVM();
        BeanUtils.populate(messageRequestVM, jsonObject);
        Integer status = jsonObject.getInteger("status");
        return RestResponse.ok(abattoirService.admissionList(messageRequestVM, status));
    }

    /**
     * 新增摊位
     */
    @PostMapping("insertBooth")
    public RestResponse insetBooth(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        AbattoirBooth abattoirBooth = new AbattoirBooth();
        BeanUtils.populate(abattoirBooth, jsonObject);
        this.abattoirService.insertAbattoirBooth(abattoirBooth);
        return RestResponse.ok();
    }

    /**
     * 删除摊位
     */
    @PostMapping("deleteBooth")
    public RestResponse deleteBooth(@RequestBody JSONObject jsonObject) {
        String guid = jsonObject.getString("guid");
        //判断是否存在摊位明细，如果存在明细不能删除
        int count = this.abattoirService.countByBoothGuid(guid);
        if (count == 0) {
            this.abattoirService.deleteBooth(guid);
            return RestResponse.ok();
        } else {
            return RestResponse.fail(0, "该摊位下存在明细，不能删除！");
        }
    }

    /**
     * 修改摊位
     */
    @PostMapping("updateBooth")
    public RestResponse updateBooth(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        AbattoirBooth abattoirBooth = new AbattoirBooth();
        BeanUtils.populate(abattoirBooth, jsonObject);
        this.abattoirService.updateBooth(abattoirBooth);
        return RestResponse.ok();
    }

    /**
     * 查询摊位明细
     */
    @PostMapping("queryBoothDetail")
    public List<AbattoirBoothDetail> queryBoothDetail(@RequestBody JSONObject jsonObject) {
        String boothGuid = jsonObject.getString("boothGuid");
        return this.abattoirService.queryBoothDetail(boothGuid);
    }

    /**
     * 分页查询所有摊位
     */
    @PostMapping("queryAbattoirBooth")
    public RestResponse queryAbattoirBooth(@RequestBody JSONObject jsonObject) throws InvocationTargetException, IllegalAccessException {
        MessageRequestVM messageRequestVM = new MessageRequestVM();
        BeanUtils.populate(messageRequestVM, jsonObject);
        PageInfo<AbattoirBooth> pageInfo = abattoirService.queryAbattoirBooth(messageRequestVM);
        return RestResponse.ok(pageInfo);
    }


}
